package cn.ctbu.xiaopeng.studentscoremanage.utils;

import jakarta.servlet.http.Cookie;

import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * 根据Claims生成JWT并将其设置为HttpOnly的Cookie
 * @author xiaopeng
 * @version 1.0
 */
@Slf4j
public class GetCookieWithJwtUtils {
    /**
     * 生成JWT并将其设置为HttpOnly的Cookie
     *
     * @param claims   包含JWT载荷信息的Map
     * @param maxAge    Cookie的过期时间（单位：秒）
     * @throws Exception 如果在生成JWT或设置Cookie过程中发生任何错误
     */
    public static Cookie generateAndSetJwtCookie(Map<String, Object> claims,Integer maxAge) throws Exception {
        // 第一步：生成JWT令牌
        String jwt = JwtUtils.generateJwt(claims); // 假设JwtUtils类已经存在并提供了生成JWT的方法

        // 打印日志（可选）
        System.out.println("JWT: " + jwt);

        // 第二步：将JWT设置为HttpOnly的Cookie
        Cookie cookie = new Cookie("token", jwt);
        cookie.setHttpOnly(true); // 防止前端通过JS脚本访问
        cookie.setPath("/"); // 设置路径
        cookie.setMaxAge(maxAge); // 设置过期时间为24小时（单位：秒）

        return cookie;
    }
}
